<!-- Copyright (C) 2019-2021 Junruoyu Zheng. Home page: https://junruoyu-zheng.gitee.io/ligral

     Distributed under MIT license.
     See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
-->
<!DOCTYPE html>
<html lang="en">
 <head>
  <title>
   设置语句
  </title>
  <meta charset="utf-8"/>
  <meta content="width=device-width, initial-scale=1, shrink-to-fit=no" name="viewport"/>
  <!-- Main CSS -->
  <link href="/ligral/css/style.css" rel="stylesheet"/>
  <link href="/ligral/css/rolling.css" rel="stylesheet"/>
  <link href="/ligral/css/custom.css" rel="stylesheet"/>
  <link href="/ligral/css/katex.min.css" rel="stylesheet"/>
  <link href="/ligral/avatar.png" rel="shortcut icon" type="image/x-icon"/>
  <!-- Font Awesome -->
  <script crossorigin="anonymous" src="https://kit.fontawesome.com/14294c79e2.js">
  </script>
 </head>
 <body>
  <!-- Header -->
  <div class="header-wrap d-none d-md-block">
   <div class="container">
    <div class="row">
     <!-- Left header box -->
     <header class="col-6 text-left">
      <h1 class="letter-wrap title">
       Ligral
      </h1>
     </header>
    </div>
   </div>
  </div>
  <!-- Main navigation -->
  <nav class="navbar navbar-expand-md navbar-dark bg-primary">
   <div class="container">
    <!-- Company name shown on mobile -->
    <a class="navbar-brand d-md-none d-lg-none d-xl-none" href="#">
     Ligral
    </a>
    <!-- Mobile menu toggle -->
    <button aria-controls="mainNavbar" aria-expanded="false" aria-label="Toggle navigation" class="navbar-toggler" data-target="#mainNavbar" data-toggle="collapse" type="button">
     <span class="navbar-toggler-icon">
     </span>
    </button>
    <!-- Main navigation items -->
    <div class="collapse navbar-collapse" id="mainNavbar">
     <ul class="navbar-nav mr-auto">
      <li class="nav-item">
       <a class="nav-link" href="/ligral/index.html">
        主页
        <span class="sr-only">
         (current)
        </span>
       </a>
      </li>
      <li class="nav-item dropdown active">
       <a aria-expanded="false" aria-haspopup="true" class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button">
        文档
       </a>
       <div class="dropdown-menu navbar-dark bg-primary">
        <a class="dropdown-item" href="/ligral/quick-start.html">
         快速开始
        </a>
        <a class="dropdown-item" href="/ligral/user-guide">
         用户文档
        </a>
        <a class="dropdown-item" href="/ligral/dev-guide">
         开发文档
        </a>
        <a class="dropdown-item" href="/ligral/interface/">
         接口定义
        </a>
       </div>
      </li>
      <!-- <li class="nav-item">
                                <a class="nav-link" href="#">Services</a>
                        </li> -->
      <li class="nav-item">
       <a class="nav-link" href="/ligral/product.html">
        产品
       </a>
      </li>
      <li class="nav-item">
       <a class="nav-link" href="/ligral/contact.html">
        联系我们
       </a>
      </li>
     </ul>
     <!-- <form class="form-inline header-search-form my-2 my-lg-0">
                        <input class="form-control mr-sm-2" type="text" size="10"  placeholder="Search" aria-label="Search">
                        <button class="btn btn-secondary my-2 my-sm-0" type="submit">Search</button>
                    </form> -->
    </div>
   </div>
  </nav>
  <!-- Jumbtron / Slider -->
  <!-- Main content area -->
  <main class="container">
   <div class="row" style="flex-direction: row-reverse;">
    <!-- Main content -->
    <div class="col-sm-8">
     <article>
      <h1>
       设置语句
      </h1>
      <p>
       求解一个仿真模型需要用到许多设置参数，比如求解器的选择和配置、输出文件存放位置等。
      </p>
      <p>
       这些设置语句部分可以在程序运行时通过参数传入，如果没有参数传入，则以 lig 文件中的设置语句为准。如果在 lig 文件中没有进行设置，则会采用默认参数。默认参数记录在 ligral 可执行程序所在文件夹的 default.lig 文件中。如果该文件不存在，则会使用硬编码在 ligral 程序中的设置。
      </p>
      <p>
       以下列举了目前支持的设置项。
      </p>
      <h3>
       步长
      </h3>
      <p>
       <strong>
        定义：
       </strong>
       该设置项适用于定步长求解器（目前暂时仅支持定步长欧拉求解器），给定了该求解器的步长。
      </p>
      <p>
       <strong>
        默认：
       </strong>
       0.01 秒。
      </p>
      <p>
       <strong>
        设置方法：
       </strong>
      </p>
      <ul>
       <li>
        可以在运行时添加
        <code>
         -s
        </code>
        参数进行设置，例如：
        <code>
         ligral test.lig -s 0.01
        </code>
        ，将步长设置为 0.01 秒。
       </li>
       <li>
        可以在 lig 文件中写下
        <code>
         conf step_size = 0.01;
        </code>
        ，也可达到同样效果。
       </li>
      </ul>
      <h3>
       时长
      </h3>
      <p>
       <strong>
        定义：
       </strong>
       该设置项适用于所有求解器，给定了该求解器的仿真总时长。
      </p>
      <p>
       <strong>
        默认：
       </strong>
       10 秒。
      </p>
      <p>
       <strong>
        设置方法：
       </strong>
      </p>
      <ul>
       <li>
        可以在运行时添加
        <code>
         -t
        </code>
        参数进行设置，例如：
        <code>
         ligral test.lig -t 10
        </code>
        ，将总时长设置为 10 秒。
       </li>
       <li>
        可以在 lig 文件中写下
        <code>
         conf stop_time = 10;
        </code>
        ，也可达到同样效果。
       </li>
      </ul>
      <h3>
       输出文件夹
      </h3>
      <p>
       <strong>
        定义：
       </strong>
       所有在 ligral 中标记为输出的信号（例如 Scope、Print 和 PhaseDiagram）都会被保存到本地的 CSV 文件中（具体参见模块文档），除此之外一些模块可能也会有输出文件，该设置项设置了输出文件存放的文件夹。
      </p>
      <p>
       <strong>
        默认：
       </strong>
       输出文件放在与 lig 文件同名的文件夹下。运行
       <code>
        ligral folder/test.lig
       </code>
       ，若 lig 文件中没有规定输出文件夹，则输出文件被放置在文件夹 folder/test/* 下。
      </p>
      <p>
       <strong>
        设置方法：
       </strong>
      </p>
      <ul>
       <li>
        可以在运行时添加
        <code>
         -o
        </code>
        参数进行设置，例如：
        <code>
         ligral test.lig -o out
        </code>
        ，将输出文件夹设置为 out。
       </li>
       <li>
        可以在 lig 文件中写下
        <code>
         conf output_folder = 'out';
        </code>
        ，也可达到同样效果。
       </li>
      </ul>
      <h3>
       IP 地址
      </h3>
      <p>
       <strong>
        定义：
       </strong>
       Ligral 程序运行时通过发送 UDP 包的方式与其他程序共享数据，改设置项设置了网关的 IP 地址。
      </p>
      <p>
       <strong>
        默认：
       </strong>
       127.0.0.1。
      </p>
      <p>
       <strong>
        设置方法：
       </strong>
      </p>
      <ul>
       <li>
        可以在 lig 文件中写下
        <code>
         conf ip_address = '127.0.0.1';
        </code>
        ，将 IP 地址设置为 127.0.0.1。
       </li>
      </ul>
      <h3>
       端口
      </h3>
      <p>
       <strong>
        定义：
       </strong>
       Ligral 程序运行时通过发送 UDP 包的方式与其他程序共享数据，改设置项设置了网关的端口。
      </p>
      <p>
       <strong>
        默认：
       </strong>
       8783。
      </p>
      <p>
       <strong>
        设置方法：
       </strong>
      </p>
      <ul>
       <li>
        可以在 lig 文件中写下
        <code>
         conf port = 8783;
        </code>
        ，将端口设置为 8783。
       </li>
      </ul>
      <h3>
       求解器
      </h3>
      <p>
       <strong>
        定义：
       </strong>
       该项设置了仿真采用的求解器。目前支持的求解器包括：
       <code>
        ode1
       </code>
       (
       <code>
        euler
       </code>
       )、
       <code>
        ode2
       </code>
       、
       <code>
        ode2m
       </code>
       、
       <code>
        ode4
       </code>
       等，其中
       <code>
        ode2m
       </code>
       在 control 包中实现。
      </p>
      <p>
       <strong>
        默认：
       </strong>
       ode4
      </p>
      <p>
       <strong>
        设置方法：
       </strong>
      </p>
      <ul>
       <li>
        可以在 lig 文件中写下
        <code>
         conf solver = 'ode2';
        </code>
        ，设置求解器。
       </li>
      </ul>
      <h3>
       实时仿真
      </h3>
      <p>
       <strong>
        定义：
       </strong>
       该项设置了是否启用实时仿真。如果启用实时仿真，求解器必须数定步长求解器。如果启用了内部绘图模块，会自动调用实时绘图模块，如果使用外部绘图，则会实时发送数据至绘图工具，从而实现实时绘图。
       <strong>
        默认：
       </strong>
       非实时仿真。
      </p>
      <p>
       <strong>
        设置方法：
       </strong>
      </p>
      <ul>
       <li>
        可以在 lig 文件中写下
        <code>
         conf realtime = true;
        </code>
        ，启用实时仿真。
       </li>
      </ul>
      <h3>
       Python 解释器
      </h3>
      <p>
       <strong>
        定义：
       </strong>
       该项设置了 Python 可执行程序的路径（含文件名），如果已经在系统目录，也可以只指定文件名。在 Windows 系统下，默认的 python 即可，在 Linux 下一般需要改成 python3。未来可能考虑识别系统信息，修改默认值。
      </p>
      <p>
       <strong>
        默认：
       </strong>
       python
      </p>
      <p>
       <strong>
        设置方法：
       </strong>
      </p>
      <ul>
       <li>
        可以在 lig 文件中写下
        <code>
         conf python = 'python';
        </code>
        ，设置解释器可执行文件路径。
       </li>
      </ul>
      <h3>
       内部绘图工具
      </h3>
      <p>
       <strong>
        定义：
       </strong>
       该项是一个设置集合，用来设置内部绘图工具的一些属性。
      </p>
      <p>
       <strong>
        设置项：
       </strong>
       ：
      </p>
      <ul>
       <li>
        <code>
         enable
        </code>
        ：设置是否启用内部绘图模块
       </li>
       <li>
        <strong>
         默认：
        </strong>
        不启用
       </li>
       <li>
        <strong>
         设置方法：
        </strong>
        <code>
         conf inner_plotter.enable = true;
        </code>
       </li>
       <li>
        <code>
         output_script
        </code>
        ：设置是否将绘制图像的脚本保存，仅在非实时仿真有效
       </li>
       <li>
        <strong>
         默认：
        </strong>
        不输出脚本
       </li>
       <li>
        <strong>
         设置方法：
        </strong>
        <code>
         conf inner_plotter.output_script = true;
        </code>
       </li>
       <li>
        <code>
         save_figure
        </code>
        ：设置是否将绘制的图像保存
       </li>
       <li>
        <strong>
         默认：
        </strong>
        不保存图像
       </li>
       <li>
        <strong>
         设置方法：
        </strong>
        <code>
         conf inner_plotter.save_figure = true;
        </code>
       </li>
      </ul>
      <h3>
       日志系统
      </h3>
      <p>
       <strong>
        定义：
       </strong>
       该项是一个设置集合，用来设置日志系统的一些属性。
      </p>
      <p>
       <strong>
        设置项：
       </strong>
       ：
      </p>
      <ul>
       <li>
        <code>
         print_out
        </code>
        ：设置是否将日志输出到屏幕
       </li>
       <li>
        <strong>
         默认：
        </strong>
        是
       </li>
       <li>
        <strong>
         设置方法：
        </strong>
        <code>
         conf logger.print_out = true;
        </code>
       </li>
       <li>
        <code>
         min_print_out_level
        </code>
        ：设置将日志输出到屏幕的最低等级（从低到高依次为
        <code>
         debug
        </code>
        、
        <code>
         info
        </code>
        、
        <code>
         warning
        </code>
        、
        <code>
         prompt
        </code>
        、
        <code>
         error
        </code>
        、
        <code>
         fatal
        </code>
        ）
       </li>
       <li>
        <strong>
         默认：
        </strong>
        <code>
         warning
        </code>
       </li>
       <li>
        <strong>
         设置方法：
        </strong>
        <code>
         conf logger.min_print_out_level = 'warning';
        </code>
       </li>
       <li>
        <code>
         min_log_file_level
        </code>
        ：设置将日志输出到文件的最低等级
       </li>
       <li>
        <strong>
         默认：
        </strong>
        <code>
         info
        </code>
       </li>
       <li>
        <strong>
         设置方法：
        </strong>
        <code>
         conf logger.min_log_file_level = 'info';
        </code>
       </li>
       <li>
        <code>
         print_out_plain_text
        </code>
        ：设置是否将日志元信息（如时间戳、发送方等）输出到屏幕
       </li>
       <li>
        <strong>
         默认：
        </strong>
        否
       </li>
       <li>
        <strong>
         设置方法：
        </strong>
        <code>
         conf logger.print_out_plain_text = false;
        </code>
       </li>
       <li>
        <code>
         log_file
        </code>
        ：设置日志输出文件，如果为空则不输出
       </li>
       <li>
        <strong>
         默认：
        </strong>
        是
       </li>
       <li>
        <strong>
         设置方法：
        </strong>
        <code>
         conf logger.log_file = 'ligral.log';
        </code>
       </li>
      </ul>
     </article>
    </div>
    <!-- Sidebar -->
    <aside class="col-sm-4">
     <div class="sidebar-box">
      <h4>
       目录
      </h4>
      <div class="list-group list-group-root">
       <a class="list-group-item" href="/ligral/quick-start.html">
        快速开始
       </a>
       <a class="list-group-item" href="/ligral/user-guide/index.html">
        用户文档
       </a>
       <div class="list-group">
        <a class="list-group-item" href="/ligral/user-guide/terms.html">
         术语定义
        </a>
        <a class="list-group-item active" href="/ligral/user-guide/config.html">
         设置语句
        </a>
        <a class="list-group-item" href="/ligral/user-guide/const.html">
         声明常量
        </a>
        <a class="list-group-item" href="/ligral/user-guide/node.html">
         声明节点
        </a>
        <a class="list-group-item" href="/ligral/user-guide/link.html">
         节点连接
        </a>
        <a class="list-group-item" href="/ligral/user-guide/matrix.html">
         矩阵运算
        </a>
        <a class="list-group-item" href="/ligral/user-guide/route.html">
         路由类型
        </a>
        <a class="list-group-item" href="/ligral/user-guide/signature.html">
         接口签名
        </a>
        <a class="list-group-item" href="/ligral/user-guide/import.html">
         引用依赖
        </a>
       </div>
       <a class="list-group-item" href="/ligral/dev-guide/index.html">
        开发文档
       </a>
       <div class="list-group">
        <a class="list-group-item" href="/ligral/dev-guide/syntax.html">
         语法设计
        </a>
        <a class="list-group-item" href="/ligral/dev-guide/interpreter.html">
         解释器
        </a>
        <a class="list-group-item" href="/ligral/dev-guide/component.html">
         模块组件
        </a>
        <a class="list-group-item" href="/ligral/dev-guide/simulation.html">
         问题抽象
        </a>
        <a class="list-group-item" href="/ligral/dev-guide/tools.html">
         工具箱
        </a>
       </div>
       <a class="list-group-item" href="/ligral/interface/index.html">
        接口定义
       </a>
       <div class="list-group">
        <a class="list-group-item" href="/ligral/interface/model.html">
         模块接口
        </a>
        <a class="list-group-item" href="/ligral/interface/protocol.html">
         数据接口
        </a>
       </div>
      </div>
     </div>
     <div class="sidebar-box sidebar-box-bg">
      <h4>
       关于我们
      </h4>
      <p>
       我们是一群有志于突破工业软件封锁、具有开源精神的开发者。本项目旨在替代 Simulink 进行仿真，通过与框图等效的文本语言描述仿真对象，并解释/编译而后求解。
       <a class="readmore" href="https://gitee.com/junruoyu-zheng/ligral/wikis" target="_blank">
        更多 »
       </a>
      </p>
     </div>
     <div class="sidebar-box">
      <h4>
       仓库链接
      </h4>
      <ul>
       <li>
        <a href="https://gitee.com/junruoyu-zheng/ligral" target="_blank" title="Gitee">
         Gitee 仓库
        </a>
       </li>
       <li>
        <a href="https://github.com/JRY-Zheng/ligral" target="_blank" title="GitHub">
         GitHub 仓库
        </a>
       </li>
      </ul>
     </div>
    </aside>
   </div>
  </main>
  <!-- Footer -->
  <footer class="footer">
   <div class="footer-lists">
    <div class="container">
     <div class="row">
      <div class="col-sm">
       <ul>
        <li>
         <h4>
          联系我们
         </h4>
        </li>
        <li>
         <a href="mailto:zhengjry@outlook.com">
          给我们发邮件
         </a>
        </li>
        <li>
         <a href="https://www.zhihu.com/people/LostFish" target="_blank">
          来知乎关注我
         </a>
        </li>
        <li>
         <a href="https://web.okjike.com/u/105ad022-f646-48c0-8236-6007ee5179c5" target="_blank">
          来即刻关注我
         </a>
        </li>
       </ul>
      </div>
      <div class="col-sm">
       <ul>
        <li>
         <h4>
          代码仓库
         </h4>
        </li>
        <li>
         <a href="https://gitee.com/junruoyu-zheng/ligral" target="_blank">
          Gitee 仓库
         </a>
        </li>
        <li>
         <a href="https://github.com/JRY-Zheng/ligral" target="_blank">
          GitHub 仓库
         </a>
        </li>
       </ul>
      </div>
      <div class="col-sm">
       <ul>
        <li>
         <h4>
          合作伙伴
         </h4>
        </li>
        <li>
         <a href="http://pyminer.com" target="_blank">
          PyMiner 官网
         </a>
        </li>
        <li>
         <a href="https://gitee.com/py2cn/pyminer" target="_blank">
          PyMiner 仓库地址
         </a>
        </li>
       </ul>
      </div>
      <div class="col-sm">
       <h4>
        致谢
       </h4>
       <p>
        Ligral 的开发得到了很多帮助，特在此致谢！感谢我的单位对创新的鼓励；感谢我的导师 James 对数值积分的指导；感谢 Gitee 对项目的支持，在刚开源不久就为我推荐；感谢 PyMiner 开发团队对我的鼓励和支持！
       </p>
       <p class="social-icons">
        <a href="https://gitee.com/junruoyu-zheng/ligral/stargazers" style="text-decoration: none;" target="_blank">
         <img alt="star" src="https://gitee.com/junruoyu-zheng/ligral/badge/star.svg?theme=dark"/>
        </a>
        <a href="https://www.zhihu.com/people/LostFish" target="_blank">
         <i class="fab fa-zhihu fa-2x zhihu-icon">
         </i>
        </a>
       </p>
      </div>
     </div>
    </div>
   </div>
   <div class="footer-bottom">
    <p class="text-center">
     Copyright © 2021. Ligral All rights reserved. 梨果科技版权所有 © 2021
    </p>
    <p class="text-center">
     <a href="#">
      <i class="fa fa-arrow-up">
      </i>
      回到顶部
     </a>
    </p>
   </div>
  </footer>
  <!-- Bootcamp JavaScript -->
  <!-- jQuery first, then Popper.js, then Bootstrap JS -->
  <script src="/ligral/js/jquery-3.2.1.slim.min.js">
  </script>
  <script src="/ligral/js/popper.min.js">
  </script>
  <script src="/ligral/js/bootstrap.min.js">
  </script>
  <script src="/ligral/js/TweenMax.min.js">
  </script>
  <script src="/ligral/js/rolling.js">
  </script>
 </body>
</html>